//
// Created by LiuYou on 2021/5/7.
//


#include <cstdio>
#include <cerrno>
#include <cstdlib>
#include <cstring>
#include <libgen.h>


/**
 * @brief fopen & fclose
 */
int main(int argc, char** argv) {
    std::fprintf(stdout, "%s\n", dirname(argv[0]));
    std::fprintf(stdout, "%s\n", basename(argv[0]));
    std::fflush(stdout);

//    FILE* filePtr = std::fopen("tmp", "w");
    FILE* filePtr = std::fopen("tmp", "w");
    if (filePtr == nullptr) {

        std::fprintf(stderr, "fopen() failure! errno = %d\n", errno);
        // 把errno转化为error msg的两个函数
        // 这两个函数推荐使用。
        std::perror("fopen()");
        std::fprintf(stderr, "fopen() failure: %s\n", std::strerror(errno));

        std::exit(1);
    }

    std::puts("OK");


    std::fclose(filePtr);
    return 0;
}